草庐IT

linux - 为什么这个字符串的值在 bash 脚本中被执行?

为什么这个脚本会执行if语句中的字符串:#!/bin/bashFILES="*"STRING=''forfin$FILESdoif["$STRING"=""]thenechofirstSTRING='hello'elseSTRING="$STRINGhello"fidoneecho$STRING当使用shscript.sh输出时:firstlesscd.sh:line7:[hello:commandnotfoundlesscd.sh:line7:[hellohello:commandnotfoundlesscd.sh:line7:[hellohellohello:commandnotf

linux - Bash shell - : Command

冒号命令是一个空命令。:结构在变量的条件设置中也很有用。例如,:${var:=value}如果没有:,shell会尝试将$var作为命令求值。我不太明白上面声明的最后一句话。谁能给我一些细节?谢谢 最佳答案 尝试var=badcommand$var你会得到bash:badcommand:commandnotfound尝试var=${var:=badcommand}你会得到同样的东西。shell(例如bash)总是尝试将每个命令行上的第一个单词作为命令运行,即使在进行变量扩展之后也是如此。唯一的异常(exception)是var=va

linux - bash输出到文件

我有以下声明foriin`cati.txt`;dowine~/run.exe$i.asc>>out.asc;done但它一直将所有输出写入控制台而不是文件“out.asc”。请你帮我把输出重定向到文件而不是屏幕。提前致谢! 最佳答案 可能是wine正在写入stderr,因此您需要重定向它:foriin`cati.txt`;dowine~/run.exe$i.asc2>>out.asc;done注意2>>中的2运算符,这意味着stderr。 关于linux-bash输出到文件,我们在Sta

linux - 如何完全静音 bash 脚本的 vlc 输出?

我有一个为自己编写的脚本,它在某个地方使用vlc结束,我需要它停止输出它想要的任何东西,但保留我自己的输出(所以没有“清除”)。我使用了参数:“-q”和“--no-sout-x264-quiet”但无济于事,它仍然输出丑陋的消息,即:“警告:调用rand()”和“已阻止”:..."和"Gtk-WARNING**..."我尝试重定向“vlc...>err.log”,但没有帮助...(编辑[忘记添加]:重定向'>'不起作用,文件为空)我在vlc-H中搜索过,但它很大,而且有>20个“quiet”关键字,似乎没有一个有用请帮帮我:'( 最佳答案

bash - mongoexport 最近小时数来自 mongodb 的数据

我是mongodb的新手。我想从我的数据库中导出最近几个小时的一些数据。所以,我想我需要编写mongoexport命令并在--query选项中包含日期范围。我写了一个这样的bash文件并尝试运行它:#!/bin/bashmongoexport--hostlocalhost:27017--dbcopy--collectiontxt--csv--fieldsx1,x2,x3...,date--query'{"date":{$gt:newDate(newDate()-1000*60*60*3)}}'--outhome/data.csv但我得到的结果是:connectedto:localhos

bash - mongoexport 最近小时数来自 mongodb 的数据

我是mongodb的新手。我想从我的数据库中导出最近几个小时的一些数据。所以,我想我需要编写mongoexport命令并在--query选项中包含日期范围。我写了一个这样的bash文件并尝试运行它:#!/bin/bashmongoexport--hostlocalhost:27017--dbcopy--collectiontxt--csv--fieldsx1,x2,x3...,date--query'{"date":{$gt:newDate(newDate()-1000*60*60*3)}}'--outhome/data.csv但我得到的结果是:connectedto:localhos

linux - 如何仅在指定时间段内在 bash 脚本中运行命令?

比方说,我只需要在当前时间从上午11:10到下午2:30时运行“命令”。这如何在bash脚本中完成?类似下面用伪语言写的东西:#!/bin/bashwhile(1){if((currentTime>11:10am)&&(currentTime 最佳答案 其他答案忽略了当数字以0开头时,Bash将以基数8解释它†。因此,例如,当上午9点时,date'+%H%M'将返回0900,这是Bash中的无效数字。(不再)。使用现代Bash的正确且安全的解决方案:while:;docurrent=$(date'+%H%M')||exit1#orw

regex - 在 Bash 中提取两个字符之间的字符串

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。更详细地描述您的问题或includeaminimalexample在问题本身。关闭8年前。Improvethisquestion我需要帮助在Bash中提取“@”符号和空格“”之间的字符串。我正在使用PythonTwitter工具,输出是这样的:4304382292007403522014-02-0314:30:45CST@SawBlastt@WereAutomatic101formetojoinaswell我需要提取两个字符串:SawBlasttW

linux - 重定向 stderr 和 stdout 以分隔 Bash 中的文件?

我可以使用以下方法将stdout和stderr重定向到单独的文件:dir>>out2>>error或stderror和stdout一起使用到一个文件中:dir>>consolidate2>&1我怎样才能一起做这件事(退出、错误、一次合并文件)? 最佳答案 你可以试试:(command>>(teeout.txt)2>>(teeerror.txt>&2))&>consol.txt测试:$lsf$lsg*ls:cannotaccessg*:Nosuchfileordirectory$(lsgf>>(teeout.txt)2>>(teeer

linux - 是否可以在 bash 中访问没有 '$' 的环境变量?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎不是关于aspecificprogrammingproblem,asoftwarealgorithm,orsoftwaretoolsprimarilyusedbyprogrammers的.如果您认为这个问题是关于anotherStackExchangesite的主题,您可以发表评论,说明问题可能在哪里得到解答。关闭8年前。Improvethisquestion这可能看起来很微不足道,但我是bash脚本的新手,我在其他地方找不到答案。我有mplayer安装在ubuntu13.04上,我用它来